package com.lzctzk.serviceaddress.exception;

import com.lzctzk.serviceaddress.result.Result;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ResponseBody;


/**
 * Title:
 * Description:
 * Company:
 *
 * @user GuiYue
 * @time 15:36
 * @project_name smartcommunity
 * @package_name com.ctzk.smartcommunity
 **/
//@ControllerAdvice是Spring 3.2新增的注解，主要是用来Controller的一些公共的需求的低侵入性增强提供辅助，作用于@RequestMapping标注的方法上。
@ControllerAdvice
@ResponseBody
public class ExceptionHandler
{
    /**
     * 和此注解配合使用的其他注解有：
     *
     * @ExceptionHandler 自定义的错误处理器
     * @ModelAttribute 全局的对所有的controller的Model添加属性
     * @InitBinder 对表单数据绑定
     */

    Logger logger = LoggerFactory.getLogger(this.getClass());

    //获取被抛出的全局异常
    @org.springframework.web.bind.annotation.ExceptionHandler(value = Exception.class)
    public Result ExceptionHand(Exception e)
    {
        if (e instanceof MyException) {
            MyException myException = (MyException) e;
            return Result.error(myException.getStatus(),myException.getMessage());
        }
        logger.error("系统异常——————>",e);
        //获取返回异常中的信息
        return Result.error(-1,"未知错误");
    }
}
